package com.cszjzx.member.po;

import java.io.IOException;
import java.util.Date;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import com.cszjzx.member.dao.FieldDAOImpl;


public class Member {
	//为了方便取值这里做了一个map   字段名对应下标志
	public static Map<String,Integer>  mapEnglish = new HashMap<String, Integer>(); //英文对照
	public static Map<String, Integer> mapChinese = new HashMap<String, Integer>(); //中文对照
	public static String[] name;      //保存字段名
	private String[] values;
	static {
		try {
			List<Field> list = null;
			list = new FieldDAOImpl().findAll();
			int size=list.size(); //属性个数
			name = new String[size];
			for(int i=0;i<size;i++){
				name[i] = list.get(i).getName();
				mapEnglish.put(list.get(i).getName(),i);
				mapChinese.put(list.get(i).getChinese(), i);
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public Member(){
		values = new String[name.length];
	}
	/**
	 * 属性赋值方法
	 * @param name  字段名 ：中文或者英文
	 * @param value 字段值
	 */
    public void setValue(String name,String value){
    	int i = mapEnglish.get(name)==null? mapChinese.get(name):mapEnglish.get(name);
    	values[i]=value;
    }
    /**
     * 属性赋值方法
     * @param i   对应数据库第几列
     * @param value
     */
    public void setValue(int i,String value){
    	if(i == 7){
    		String birthday = this.getValue("birthday");
    		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    		Date bd;
    		try {
				bd = sdf.parse(birthday);
				//获取当前系统时间
	            Calendar cal = Calendar.getInstance(); 
	            //如果出生日期大于当前时间，则抛出异常
	            if (cal.before(bd)) { 
	                value = "";
	            } 
	            //取出系统当前时间的年、月、日部分
	            int yearNow = cal.get(Calendar.YEAR); 
	            int monthNow = cal.get(Calendar.MONTH); 
	            int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH); 
	            //将日期设置为出生日期
	            cal.setTime(bd); 
	            //取出出生日期的年、月、日部分  
	            int yearBirth = cal.get(Calendar.YEAR); 
	            int monthBirth = cal.get(Calendar.MONTH); 
	            int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH); 
	            //当前年份与出生年份相减，初步计算年龄
	            int age = yearNow - yearBirth; 
	            //当前月份与出生日期的月份相比，如果月份小于出生月份，则年龄上减1，表示不满多少周岁
	            if (monthNow <= monthBirth) { 
	                //如果月份相等，在比较日期，如果当前日，小于出生日，也减1，表示不满多少周岁
	                if (monthNow == monthBirth) { 
	                    if (dayOfMonthNow < dayOfMonthBirth) age--; 
	                }else{ 
	                    age--; 
	                } 
	            } 
	            value=Integer.toString(age);
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
    	}
    	values[i]=value;
    }
    /**
     * 属性访问访问方法
     * @param name 字段名：中文或者英文
     * @return
     */
    public String getValue(String name){
    	int i = mapEnglish.get(name)==null? mapChinese.get(name):mapEnglish.get(name);
    	return values[i];
    }
    public String[] getValues(){
    	return values;
    }
    public String getValue(int i){
    	return values[i];
    }
    @Override
    public String toString() {
    	String string="";
        for(int i=0;i<name.length;i++){
        	string +=name[i]+"="+values[i] + " ";
        }
    	return string;
    }
    
    public static void main(String[] args){
    	try {
			List<Member> members = new com.cszjzx.member.dao.MemberDAOImpl().findByDepartmentNameAndProcess("传媒系", "2");
			for (Member member : members) {
				System.out.println(member);
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
    }
}
